export class Ddapi {

    //钉钉签名设置
    config(cfg) {
            dd.config(cfg);
        }
        //钉钉容器设置
    ready() {
        return new Promise(function(resolve) {
            dd.ready(function() {
                resolve();
            });
        })
    }

    //钉钉图片显示
    previewImage(urls, thisUrl) {
        dd.biz.util.previewImage({
            urls: urls, //图片地址列表
            current: thisUrl, //当前显示的图片链接
            onSuccess: function(result) {
                /**/
            },
            onFail: function(err) {}
        })
    }


    // //钉钉扫码功能
    // utilscan() {
    //     return new Promise(function(resolve) {
    //         dd.biz.util.scan({
    //             type: String,
    //             onSuccess: function(data) {
    //                 alert(data)
    //             },
    //             onFail: function(err) {
    //                 alert(JSON.stringify(err))
    //             }
    //         })
    //     })
    // }

    //免登CODE获取
    // requestAuthCode(corpId) {
    //     // runtime.permission.requestOperateAuthCode
    //     return new Promise(function(resolve, reject) {
    //         console.log('requestAuthCode mobile');
    //         dd.runtime.permission.requestAuthCode({
    //             corpId: corpId,

    //             onSuccess: function(result) {
    //                 console.log('requestAuthCode', result.code);
    //                 resolve(result.code);
    //             },
    //             onFail: function(err) {
    //                 reject(err);
    //             }
    //         });
    //     });
    // }

    // // 获取微应用反馈式操作的临时授权码
    // requestAppAuthCode(corpId, agentId) {
    //         return new Promise(function(resolve, reject) {
    //             dd.runtime.permission.requestOperateAuthCode({
    //                 corpId: corpId,
    //                 agentId: agentId,
    //                 onSuccess: function(result) {
    //                     resolve(result.code);
    //                 },
    //                 onFail: function(err) {
    //                     reject(err);
    //                 }
    //             });
    //         });
    //     }
    //钉钉TITLE设置
    setTitle(title) {
        dd.biz.navigation.setTitle({
            title: title, //控制标题文本，空字符串表示显示默认文本
            onSuccess: function(result) {

            },
            onFail: function(err) {

            }
        });
    }

    //钉钉错误信息设置
    error() {
            return new Promise(function(resolve) {
                dd.error(function(error) {
                    resolve(error);
                });
            });
        }
        //钉钉alert项目提示框
    alert(msgtext) {
            return new Promise(function(resolve) {
                dd.device.notification.alert({
                    message: msgtext,
                    title: "提示", //可传空
                    buttonName: "确认",
                    onSuccess: function() {},
                    onFail: function(err) {}
                });

            })
        }
        //钉钉confirm项目提示框
    confirm(msgtext) {
        return new Promise(function(resolve) {
            dd.device.notification.confirm({
                message: msgtext,
                title: "提示",
                buttonLabels: ['确认', '取消'],
                onSuccess: function(result) {
                    resolve(result.buttonIndex)
                },
                onFail: function(err) {}
            });
        })
    }

    //钉钉提示信息
    toast(text, icon) {
        dd.device.notification.toast({
            icon: icon, //icon样式，有success和error，默认为空 0.0.2
            text: text, //提示信息
            duration: 2, //显示持续时间，单位秒，默认按系统规范[android只有两种(<=2s >2s)]
            delay: 0, //延迟显示，单位秒，默认0
            onSuccess: function(result) {},
            onFail: function(err) {}
        });
    }

    //关闭当前页面
    close() {
        dd.biz.navigation.close({
            onSuccess: function(result) {},
            onFail: function(err) {}
        })
    }

    // //启用下拉刷新
    // enableRefresh() {
    //     return new Promise((resolve, reject) => {
    //         dd.ui.pullToRefresh.enable({
    //             onSuccess: function(result) {
    //                 resolve(result);
    //             },
    //             onFail: function(err) {
    //                 reject(err);
    //             }
    //         })
    //     })
    // }

    // 复制
    setData(text) {
        return new Promise((resolve, reject) => {
            dd.biz.clipboardData.setData({
                text: text, //要复制粘贴板的内容   
                onSuccess: function(result) {
                    resolve("0");
                },
                onFail: function(err) {
                    reject('-1');
                }
            })
        })
    }

    // //禁用刷新
    // disabRefresh() {
    //     dd.ui.pullToRefresh.disable({
    //         onSuccess: function() {},
    //         onFail: function() {}
    //     })
    // }

    // //单个按钮设置
    // navigationSetRight(name) {
    //     return new Promise((resolve, reject) => {
    //         dd.biz.navigation.setRight({
    //             show: true, //控制按钮显示， true 显示， false 隐藏， 默认true
    //             control: true, //是否控制点击事件，true 控制，false 不控制， 默认false
    //             text: name, //控制显示文本，空字符串表示显示默认文本
    //             onSuccess: function(result) {
    //                 resolve(result);
    //             },
    //             onFail: function(err) {
    //                 reject(err);
    //             }
    //         });
    //     })
    // }

    // 
    setRightFalse(name, show = true, control = true) {
        return new Promise((resolve, reject) => {
            dd.biz.navigation.setRight({
                show: false,
                control: false,
                text: '',
                onSuccess: function(result) {},
                onFail: function(err) {}
            });
        })
    }

    // //钉钉左测按钮控制
    // navigationsetLeft() {
    //     return new Promise((resolve, reject) => {
    //         dd.biz.navigation.setLeft({
    //             show: true, //控制按钮显示， true 显示， false 隐藏， 默认true
    //             control: false, //是否控制点击事件，true 控制，false 不控制， 默认false
    //             showIcon: true, //是否显示icon，true 显示， false 不显示，默认true； 注：具体UI以客户端为准
    //             text: '我工模压要', //控制显示文本，空字符串表示显示默认文本
    //             onSuccess: function() {
    //                 alert(result)
    //                     /*
    //                     {}
    //                     */
    //                     //如果control为true，则onSuccess将在发生按钮点击事件被回调
    //             },
    //             onFail: function(err) {}
    //         });
    //     });
    // }

    // //钉钉多个按钮设置
    // setMenu(items, backColor = "#ffffff", textColor = "#DB2C30") {
    //     return new Promise((resolve, reject) => {
    //         dd.biz.navigation.setMenu({
    //             backgroundColor: backColor,
    //             textColor: textColor,
    //             items: items,
    //             onSuccess: function(data) {
    //                 resolve(JSON.stringify(data));
    //             },
    //             onFail: function(err) {}
    //         });

    //     })
    // }

    //获取钉钉个人信息[头像，名称]
    // getUserInfo() {
    //     return new Promise((resolve, reject) => {
    //         dd.biz.user.get({
    //             onSuccess: function(info) {
    //                 resolve(info);
    //             },
    //             onFail: function(err) {
    //                 reject(err);
    //             }
    //         });
    //     });
    // }

    // //钉钉企业,用户、部门、信息多选  
    // complexPicker(userids, departs, title) {
    //     return new Promise((resolve, reject) => {
    //         dd.biz.contact.complexPicker({
    //             title: title, //标题
    //             corpId: localStorage.getItem('corpId'), //企业的corpId
    //             multiple: true, //是否多选
    //             limitTips: "", //超过限定人数返回提示
    //             maxUsers: 1000, //最大可选人数
    //             pickedUsers: userids, //已选用户
    //             pickedDepartments: departs, //已选部门
    //             disabledUsers: [], //不可选用户
    //             disabledDepartments: [], //不可选部门
    //             requiredUsers: [], //必选用户（不可取消选中状态）
    //             requiredDepartments: [], //必选部门（不可取消选中状态）
    //             appId: 158, //微应用的Id
    //             // permissionType: "xxx", //选人权限，目前只有GLOBAL这个参数
    //             responseUserOnly: false, //单纯返回人，或者返回人和部门
    //             onSuccess: function(result) {
    //                 resolve(result)
    //             },
    //             onFail: function(err) {
    //                 resolve(err)
    //             }
    //         });
    //     })
    // }


    // //钉钉组织内人员多选。
    // contactChoose(userids, title) {
    //     return new Promise(function(resolve, reject) {
    //         dd.biz.contact.choose({
    //             startWithDepartmentId: -1, //-1表示打开的通讯录从自己所在部门开始展示, 0表示从企业最上层开始，(其他数字表示从该部门开始:暂时不支持)
    //             multiple: true, //是否多选： true多选 false单选； 默认true
    //             users: userids, //默认选中的用户列表，userid；成功回调中应包含该信息
    //             disabledUsers: [], // 不能选中的用户列表，员工userid
    //             corpId: localStorage.getItem('corpId'), //企业id
    //             max: 1500, //人数限制，当multiple为true才生效，可选范围1-1500
    //             limitTips: "你好，已经超出人数限制", //超过人数限制的提示语可以用这个字段自定义
    //             isNeedSearch: true, // 是否需要搜索功能
    //             title: title, // 如果你需要修改选人页面的title，可以在这里赋值 
    //             local: true, // 是否显示本地联系人，默认false
    //             onSuccess: function(data) {
    //                 resolve(data)
    //             },
    //             onFail: function(err) {
    //                 alert(JSON.stringify(err))
    //             }
    //         });

    //     })

    // }

    //打开http跳转
    openLink(url) {
        dd.biz.util.openLink({
            "url": url,
            "enableShare": true
        });
    }

    uploadImages(maxNum) {
        return new Promise(function(resolve, reject) {
            dd.biz.util.uploadImage({
                    compression: false, //(是否压缩，默认为true)
                    multiple: true, //是否多选，默认false
                    max: maxNum, //最多可选个数
                    onSuccess: function(result) {
                        resolve(result)
                    },
                    onFail: function(err) {
                        reject("取消上传图片");
                    }
                })
                // dd.biz.util.uploadImage({
                //     compression: true, //(是否压缩，默认为true)
                //     multiple: true, //是否多选，默认false
                //     max: maxNum, //最多可选个数
                //     quality: 50, // 图片压缩质量, 
                //     resize: 50, // 图片缩放率
                //     stickers: { // 水印信息
                //         time: "",
                //         dateWeather: "",
                //         username: "",
                //         address: ""
                //     },
                //     onSuccess: function(result) {
                //         resolve(result)
                //     },
                //     onFail: function(err) {
                //         reject("取消上传图片");
                //     }
                // })
        })

    }


    choose(title, arry) {
        return new Promise(function(resolve, reject) {
            dd.device.notification.actionSheet({
                title: title, //标题
                cancelButton: '取消', //取消按钮文本
                otherButtons: arry,
                onSuccess: function(result) {
                    resolve(result)
                },
                onFail: function(err) {}
            })
        })

    }

    //钉钉标题
    setTitle(title) {
        dd.biz.navigation.setTitle({
            title: title, //控制标题文本，空字符串表示显示默认文本
            onSuccess: function(result) {},
            onFail: function(err) {}
        });
    }


    //loading
    showLoading(title) {
        dd.device.notification.showPreloader({
            text: title, //loading显示的字符，空表示不显示文字
            showIcon: true, //是否显示icon，默认true
            onSuccess: function(result) {
                /*{}*/
            },
            onFail: function(err) {}
        })
    }

    //禁用加载
    hidePreloader() {
        dd.device.notification.hidePreloader({
            onSuccess: function(result) {},
            onFail: function(err) {}
        })
    }

    // complexChoose(users, depts) {
    //     return new Promise((resolve, reject) => {
    //         dd.biz.contact.complexChoose({
    //             startWithDepartmentId: 0, //-1表示从自己所在部门开始, 0表示从企业最上层开始，其他数字表示从该部门开始
    //             selectedUsers: users, //预选用户
    //             disabledUsers: [], // 不能选中的用户列表，员工userid
    //             selectedDepartments: depts, // 预选中的部门列表，部门id
    //             disabledDepartments: [], // 不能选中的部门列表，部门id
    //             // max: Number, //人数限制，当multiple为true才生效，可选范围1-1500
    //             // limitTips: "xxx", //超过人数限制的提示语可以用这个字段自定义
    //             local: "true", // 是否显示本地联系人，默认false
    //             isNeedSearch: true, // 是否需要搜索功能
    //             corpId: this.corpId, //企业id
    //             onSuccess: function(data) {
    //                 resolve(data);
    //             },
    //             onFail: function(err) {
    //                 reject(err)
    //             }
    //         });
    //     })
    // }

    // //日期
    // datetimepicker(value) {
    //     return new Promise((resolve, reject) => {
    //         dd.biz.util.datetimepicker({
    //             format: "yyyy-MM-dd HH:mm",
    //             value: value, //默认显示
    //             onSuccess: function(data) {
    //                 resolve(data.value)
    //             },
    //             onFail: function(err) {
    //                 reject.error(err);
    //             }
    //         });
    //     });
    // }

    // //下拉底部控件
    // scrollLoad() {
    //     return new Promise(function (resolve) {
    //         document.getElementById("CloudBody").onscroll = function () {
    //             if (this.scrollTop < 2) {
    //                 resolve(0)
    //             }
    //             if (this.scrollTop > 2) {
    //                 dd.ui.pullToRefresh.disable()
    //             }
    //             if (this.scrollHeight - this.scrollTop - this.offsetHeight < 2) {
    //                 resolve(1)
    //             }
    //         }
    //     })
    // }
}

let ddapi = new Ddapi();
export default ddapi;